home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / dprint / dp_fkey.c < prev    next >
Text File  |  1994-08-11  |  3KB  |  132 lines

  1. /*
  2.  
  3. 8086|Printman/POSTCARD ファンクションキーコマンド処理ルーチン
  4. Copyright (c) 1993,94 Delmonta
  5.  
  6. */
  7.  
  8. #include"dprint.h"
  9. #include<stdlib.h>
  10.  
  11. /*---------------------------------------------------------------------------*/
  12.  
  13. void    dp_putfkey(unsigned f)
  14. {
  15.     unsigned    i;
  16.  
  17.     char    menuchar[10][5] =
  18.     {
  19.         " 前 "," 次 ","JUMP","削除","データ",
  20.         "印刷","ファイル","ソノ他","DOS ","終了"
  21.     };
  22.  
  23.     printf("\033[0;37m\033[24;1f\033[2K");
  24.  
  25.     for    (i=0 ; i<10 ; i++)
  26.     {
  27.         if    (f & 1)
  28.             printf("\033[8m");
  29.  
  30.         printf("\033[7;32m%u\033[7;36m%4s\033[0m ",i+1,menuchar[i]);
  31.  
  32.         f = f>>1;
  33.     }
  34.  
  35.     dp_putcardnum();
  36. }
  37.  
  38. /*---------------------------------------------------------------------------*/
  39.  
  40. static    void    dp_jumpmenu(void)
  41. {
  42.     int    a;
  43.  
  44. jmpmenu_rep:
  45.     printf( "\033[%d;1f\033[33mカード番号(1~%d):",
  46.             SYSLINE_START,Cardnum+1);
  47.  
  48.     a = dp_getval();
  49.  
  50.     if    (1<=a && a<=Cardnum+1)        /* 正しい入力 */
  51.         Cardpos = a-1;
  52.     else if    (a != -1)            /* 正しい入力でも、        */
  53.     {                    /* ESCキーでの中断でもない */
  54.         putchar('\7');
  55.         goto jmpmenu_rep;
  56.     }
  57.  
  58.     printf("\033[0;37m\033[13;1f\033[2K");
  59.     card_reshow(63);
  60. }
  61.  
  62. /*---------------------------------------------------------------------------*/
  63. static    void    dp_childprocess(void)
  64. {
  65.     printf( "\033[2J"
  66.         "\033[33mEXIT<改行>\033[37mでカード画面に戻ります。\n");
  67.  
  68.     system("");
  69.  
  70.     dp_puttitle();
  71.     card_reshow(63);
  72. }
  73.  
  74. /*---------------------------------------------------------------------------*/
  75.  
  76. void    dp_funcmenu(void)
  77. {
  78.     char    c = dp_getch();
  79.  
  80.     switch    (c)
  81.     {
  82.     case 0x53:
  83.         if    (Cardpos > 0)        /* PF1:前のカード */
  84.         {
  85.             Cardpos--;
  86.             dp_putcardnum();
  87.             card_reshow(63);
  88.         }
  89.         break;
  90.     case 0x54:
  91.         if    (Cardpos < Cardnum)    /* PF2:次のカード */
  92.         {
  93.             Cardpos++;
  94.             dp_putcardnum();
  95.             card_reshow(63);
  96.         }
  97.         break;
  98.     case 0x55:                /* PF3:ジャンプ */
  99.         dp_jumpmenu();
  100.         break;
  101.     case 0x56:            /* PF4:カーソル位置のデータの削除 */
  102.         if    (Cardpos<Cardnum)
  103.         {
  104.             if    (Ypos==-1)
  105.                 Card[Cardpos]->zipcode[0] = -1;
  106.             else
  107.                 Card[Cardpos]->data[Ypos][0] = '\0';
  108.  
  109.             Changedflag = TRUE;
  110.         }
  111.         break;
  112.     case 0x57:                /* PF5: データ処理メニュー */
  113.         dp_datamenu();
  114.         break;
  115.     case 0x45:                /* PF6:印刷 */
  116.         dp_printmenu();
  117.         break;
  118.     case 0x4a:                /* PF7:ファイル */
  119.         dp_filemenu();
  120.         break;
  121.     case 0x50:                /* PF8:その他のメニュー */
  122.         dp_othersmenu();
  123.         break;
  124.     case 0x51:                /* PF9: 子プロセス */
  125.         dp_childprocess();
  126.         break;
  127.     case 0x5a:                /* PF10:終了 */
  128.         if    (dp_isallsure())
  129.             dp_endscreen(EXITCODE_OK);
  130.     }
  131. }
  132.